# The Neighborhood Hangover: Housing Market Effects of Commercial Anchor Loss

## Dataset Overview

This dataset supports the research article "Commercial Anchor Loss and Neighborhood Housing Markets: A Spatial Econometric Analysis of Brewery Closures" submitted to *Urban Geography*.

**Principal Investigator:** Grant Glass, North Carolina State University

**Contact:** gglass@ncsu.edu

**Date of Collection:** October 2020 - December 2025

**Geographic Coverage:** United States (306 counties across 50 states)

---

## Description

This dataset documents 15,936 brewery closures in the United States between 2020 and 2025, extracted through "version control archaeology" of the Open Brewery Database Git history. The dataset enables difference-in-differences analysis of how commercial anchor loss affects neighborhood housing markets, measured through USPS vacancy rates and Zillow Home Value Index (ZHVI) trajectories.

### Key Features

- **Novel closure identification method:** Brewery closures reconstructed from Git commit history, overcoming survivorship bias in contemporary business registries
- **Network-based walksheds:** 15-minute pedestrian catchment areas computed via OSMnx, avoiding Euclidean buffer measurement error
- **Panel structure:** Quarterly observations enabling event study and difference-in-differences estimation
- **Spatial context:** Closures classified as "clustered" (≥2 neighbors) or "isolated" to test agglomeration resilience

---

## File Manifest

| Filename | Description | Format | Rows | Variables |
|----------|-------------|--------|------|-----------|
| `brewery_closures.csv` | Primary closure dataset | CSV | 15,936 | 12 |
| `panel_analysis_data.csv` | DiD panel dataset | CSV | 1,530 | 8 |
| `closures_by_state.csv` | State-level aggregates | CSV | 51 | 3 |
| `did_results.csv` | Regression output | CSV | 4 | 6 |
| `event_study_results.csv` | Event study coefficients | CSV | 5 | 4 |
| `CODEBOOK.md` | Variable definitions | Markdown | — | — |
| `run_analysis.py` | Replication script | Python | — | — |
| `generate_maps.py` | Figure generation | Python | — | — |

---

## Data Sources

### Primary Data

1. **Open Brewery Database (OBDB)**
   - Source: https://github.com/openbrewerydb/openbrewerydb
   - License: Public Domain (CC0)
   - Access method: Git history extraction via `git log` and `git diff`
   - Variables extracted: brewery_id, name, city, state, latitude, longitude, closure_date

2. **USPS Vacancy Data**
   - Source: HUD Aggregated USPS Administrative Data on Address Vacancies
   - URL: https://www.huduser.gov/portal/datasets/usps.html
   - Temporal coverage: Q1 2018 - Q4 2025
   - Geographic level: Census tract (aggregated to walkshed)

3. **Zillow Home Value Index (ZHVI)**
   - Source: Zillow Research
   - URL: https://www.zillow.com/research/data/
   - Series: ZHVI All Homes (SFR & Condo) - Smoothed, Seasonally Adjusted
   - Geographic level: ZIP code (crosswalked to walkshed)

### Crosswalks and Boundaries

4. **HUD ZIP-Tract Crosswalk**
   - Source: HUD Office of Policy Development and Research
   - Used for: Linking ZHVI (ZIP) to vacancy (tract) data

5. **OpenStreetMap via OSMnx**
   - Source: OpenStreetMap contributors
   - Used for: Computing 15-minute network isochrones (walksheds)
   - Software: OSMnx v1.6+ (Boeing, 2017)

---

## Methodology Notes

### Version Control Archaeology

Brewery closures were identified by parsing the Git commit history of the Open Brewery Database:

```bash
git log --all --oneline -- breweries/*.json | wc -l  # 2,847 commits
```

For each commit, we computed diffs to identify:
- Row deletions (brewery removed from database)
- Status changes to "closed" or "planning"

Closure dates are assigned to the commit timestamp when the brewery was removed or marked closed.

### Walkshed Computation

Network isochrones were computed using OSMnx:

```python
import osmnx as ox
G = ox.graph_from_point((lat, lon), dist=2000, network_type='walk')
isochrone = ox.isochrone(G, center_node, trip_times=[15], speed=4.5)
```

Parameters:
- Walking speed: 4.5 km/h (standard pedestrian pace)
- Trip time: 15 minutes (primary specification)
- Network type: Pedestrian walkways

### Treatment/Control Classification

- **Treatment:** Walksheds with above-median closure intensity (≥3 closures)
- **Control:** Walksheds with below-median closure intensity (0-2 closures, brewery retained)
- **Excluded:** Areas that never contained breweries (to avoid selection bias)

---

## Replication Instructions

### Requirements

```
python >= 3.9
pandas >= 1.5
numpy >= 1.24
statsmodels >= 0.14
geopandas >= 0.14
osmnx >= 1.6
matplotlib >= 3.7
```

### Running Analysis

```bash
# 1. Extract closures from OBDB Git history
python run_analysis.py --extract-closures

# 2. Compute walksheds (requires internet for OSM)
python run_analysis.py --compute-walksheds

# 3. Run DiD analysis
python run_analysis.py --run-did

# 4. Generate figures
python generate_maps.py
```

---

## Citation

If you use this dataset, please cite:

```
Glass, Grant. 2026. "The Neighborhood Hangover: Housing Market Effects of
Commercial Anchor Loss." Harvard Dataverse. https://doi.org/[DOI]
```

And the associated publication:

```
Glass, Grant. 2026. "Commercial Anchor Loss and Neighborhood Housing Markets:
A Spatial Econometric Analysis of Brewery Closures." Urban Geography.
```

---

## License

This dataset is released under **CC BY 4.0** (Creative Commons Attribution 4.0 International).

You are free to:
- Share — copy and redistribute the material
- Adapt — remix, transform, and build upon the material

Under the following terms:
- Attribution — You must give appropriate credit

---

## Acknowledgments

The author thanks the Open Brewery Database contributors for maintaining the open-source dataset that made this research possible. The version control archaeology methodology relies on their careful documentation practices.

---

## Version History

| Version | Date | Description |
|---------|------|-------------|
| 1.0 | 2026-01-26 | Initial release |
